﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Logica.Modulos.ClasesLogica;
using Modelo.Modulos.ClasesModelado;

namespace ProyectoFinal
{
    public partial class frmAdminUsuarios : Form
    {
        string Accion_Form = "";
        private int idPerfilPermiso;
        public int IdPerfilPermiso
        {
            get { return idPerfilPermiso; }
            set { idPerfilPermiso = value; }
        }
        public frmAdminUsuarios()
        {
            InitializeComponent();
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            try
            {
                frmInfoUsuario usuario = new frmInfoUsuario();
                usuario.Accion = "Agregar";
                usuario.ShowDialog();
                UsuarioMod objMod = new UsuarioMod();
                CargarGrid("Agregar", objMod);
            }
            catch (Exception exc)
            {

                MessageBox.Show(exc.Message, "Error del Sistema", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            
             

        }

        private void btnEditar_Click(object sender, EventArgs e)
        {
            try
            {
                UsuarioMod objMod = new UsuarioMod();
                frmInfoUsuario usuario = new frmInfoUsuario();
                usuario.Accion = "Editar";
                int Idindice = dataGridView1.SelectedRows[0].Index;
                usuario.IdUsuario = Convert.ToInt32(dataGridView1[0, Idindice].Value);
                usuario.ShowDialog();
                CargarGrid("Editar", objMod);
                  
            }
            catch (Exception exc)
            {

                MessageBox.Show(exc.Message, "Error del Sistema", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
          
             
        }

        private void btnModificar_Click(object sender, EventArgs e)
        {
            try
            {
                frmInfoUsuario usuario = new frmInfoUsuario();

                usuario.Accion = "Mostrar";
                int Idindice = dataGridView1.SelectedRows[0].Index;
                usuario.IdUsuario = Convert.ToInt32(dataGridView1[0, Idindice].Value);
                usuario.ShowDialog();

            }
            catch (Exception exc)
            {

                MessageBox.Show(exc.Message, "Error del Sistema", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
           

        }

        private void button1_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void frmAdminUsuarios_Load(object sender, EventArgs e)
        {
            try
            {
                CargarPermisos();
                UsuarioMod objMod = new UsuarioMod();
                Accion_Form = "Cargar";
                CargarGrid(Accion_Form, objMod);
            }
            catch (Exception exc)
            {

                MessageBox.Show(exc.Message, "Error del Sistema", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
          
        }

        public void CargarGrid(string Accion_Form, UsuarioMod objMod)
        {
            if ((Accion_Form == "Agregar") || (Accion_Form == "Cargar") || (Accion_Form == "Editar"))
            {
                try
                {
                    dataGridView1.Rows.Clear();
                    UsuariosLog logica = new UsuariosLog();
                    List<UsuarioMod> listaClientes = logica.ConsultarUsuarios();

                    for (int i = 0; i < listaClientes.Count; i++)
                    {
                        dataGridView1.Rows.Add();
                        dataGridView1.Rows[i].Cells[0].Value = listaClientes[i].IdUsuario;
                        dataGridView1.Rows[i].Cells[1].Value = listaClientes[i].NombreCompleto;
                        dataGridView1.Rows[i].Cells[2].Value = listaClientes[i].Identificacion;
                        dataGridView1.Rows[i].Cells[3].Value = listaClientes[i].Perfil;
                    }
                }
                catch (Exception exc)
                {

                    MessageBox.Show(exc.Message, "Error del Sistema", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
               
            }

            else
            {
                if (Accion_Form == "Eliminar")
                {
                    try
                    {
                        UsuariosLog logica = new UsuariosLog();
                        List<UsuarioMod> listaClientes = logica.ConsultarUsuarios();

                        DataGridViewSelectedRowCollection listaGrid = dataGridView1.SelectedRows;
                        for (int i = listaGrid.Count - 1; i >= 0; i--)
                        {
                            dataGridView1.Rows.RemoveAt(listaGrid[i].Index);
                        }
                    }
                    catch (Exception exc)
                    {

                        MessageBox.Show(exc.Message, "Error del Sistema", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                   
                }

               

            }

          }

        private void btnElimar_Click(object sender, EventArgs e)
        {
            try
            { DialogResult result = MessageBox.Show("Desea Eliminar el registro", "Confirmación", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);

            if (result == DialogResult.Yes)
            {
                Accion_Form = "Eliminar";
                int Idindice = dataGridView1.SelectedRows[0].Index;
                int Ideliminar = Convert.ToInt32(dataGridView1[0, Idindice].Value);

                UsuarioMod objMod = new UsuarioMod();
                objMod.IdUsuario = Ideliminar;


                UsuariosLog Logica = new UsuariosLog();
                Logica.EliminarUsuario(objMod);

                CargarGrid(Accion_Form, objMod);
            }
            }
            catch (Exception exc)
            {

                MessageBox.Show(exc.Message, "Error del Sistema", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        public void CargarPermisos()
        {
            try
            {
                btnAgregar.Visible = false;
                btnEditar.Visible = false;
                btnElimar.Visible = false;
                btnVer.Visible = false;
                Perfil_PermisoLog Logica = new Perfil_PermisoLog();
                PerfilesMod objMod = new PerfilesMod();
                objMod.IdPerfil = idPerfilPermiso;
                List<PerfilesMod> listaPermisos_Perfil = Logica.ConsultarPermisoIdPerfil(objMod);



                for (int i = 0; i < listaPermisos_Perfil.Count; i++)
                {
                    if (listaPermisos_Perfil[i].NombrePermiso == "Crear Usuario")
                    {
                        btnAgregar.Visible = true;
                    }
                    else
                    {
                        if (listaPermisos_Perfil[i].NombrePermiso == "Modificar Usuario")
                        {
                            btnEditar.Visible = true;

                        }
                        else
                        {
                            if (listaPermisos_Perfil[i].NombrePermiso == "Eliminar Usuario")
                            {
                                btnElimar.Visible = true;
                            }
                            else
                            {
                                if (listaPermisos_Perfil[i].NombrePermiso == "Ver Usuario")
                                {
                                    btnVer.Visible = true;
                                }
                            }
                        }

                    }
                }

            }
            catch (Exception exc)
            {

                MessageBox.Show(exc.Message, "Error del Sistema", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
           
        }

        }
    

     

    }

